
package com.ceair.mub2c.payment.payments.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.ceair.flight.payment.dto.AsyncPaymentCallbackDto;
import com.ceair.flight.payment.dto.CardInfoDto;
import com.ceair.flight.payment.dto.PayResponseDto;
import com.ceair.flight.payment.dto.PayTypeRq;
import com.ceair.flight.payment.dto.SyncPaymentCallbackDto;
import com.ceair.flight.po.model.PromotionDO;
import com.ceair.flight.query.dto.FlightOrderDto;
import com.ceair.mub2c.payment.payments.vo.BIG_ORDER;
import com.ceair.mub2c.payment.payments.vo.PayStatusVO;
import com.ceair.mub2c.payment.payments.vo.PaymentVO;

public interface PaymentService {
	
	public SyncPaymentCallbackDto syncPaymentCallback(String charset, PayResponseDto payResp);
	
	public AsyncPaymentCallbackDto asyncPaymentCallback(String charset, PayResponseDto payResp);

	public PaymentVO paymentSubmit(String sessionId,String sessionUserId,String sessionUserName, String[] productTypes, String orderNo, String[] productIdArray, Integer payType, String bankCode, String accountInfo, BigDecimal amount, BigDecimal pointAmount, String clientIP, String site, CardInfoDto cardInfo, String SCCode, String SubSCCode, String PCCode, String SubPCCode, String PCCodePoint, String SubPCCodePoint, String asyncUrl, String syncUrl, String bookingOrderNo);
	
	public String getChannelCode(String site);
	
	public BIG_ORDER findFlightOrderList(String OrderNO);
	
	public String findEmdOrder(String emdOrderNO);
	
	public PayStatusVO getPayStatus(String orderNo, String[] emdOrderNos, String flightOrderNo);
	
	public boolean validateFlight(FlightOrderDto flightOrderDto);
	
//	public CommonCardInfoRespDto queryCard(String scCode, String subScCode, String ceairMember);
//	
//	public CommonCardInfoRespDto queryCardList(String scCode, String subScCode, String ceairMember);
//
//	public CommonCardInfoRespDto insertCard(String scCode, String subScCode, String pcCode, String subPcCode, CardInfoDto cardInfo);
//	
//	public CommonCardInfoRespDto deleteCard(String scCode, String subScCode, CardInfoDto cardInfo);
	
	//获取促销吗使用的支付方式和渠道
	public List<Map<String,Object>> getPromoPayTypeList(String productOrderNo);
	
	public List<Map<String, Object>> suspendAndResume(String orderNo, boolean suspend);
	//判断促销集合是否可用
	public boolean validatePromotion(List<PromotionDO> promotionDOList,Map<String, Object> param,FlightOrderDto flightOrderDto);
	
	public Map<String,Object> modifyPayType(PayTypeRq payTypeRq);
	
	public Map<String,Object> deletePayType(PayTypeRq payTypeRq);
}
